...following removal of the boot-time pci passthru protocol.
Signed-off-by: Simon Horman <horms@verge.net.au>
return (domain, bus, slot, func)
-def assigned_or_requested_vslot(dev):
- if isinstance(dev, types.DictType):
- if dev.has_key("vslot"):
- return dev["vslot"]
- if dev.has_key("requested_vslot"):
- return dev["requested_vslot"]
- elif isinstance(dev, (types.ListType, types.TupleType)):
- vslot = sxp.child_value(dev, 'vslot', None)
- if not vslot:
- vslot = sxp.child_value(dev, 'requested_vslot', None)
- if vslot:
- return vslot
- raise PciDeviceVslotMissing("%s" % dev)
-
def find_sysfs_mnt():
try:
return utils.find_sysfs_mount()
def __init__(self,msg):
self.message = msg
def __str__(self):
- return 'pci: no vslot or requested_vslot: ' + self.message
+ return 'pci: no vslot: ' + self.message
class PciDevice:
def __init__(self, domain, bus, slot, func):
from xen.xend.server.BlktapController import blktap_disk_types
from xen.xend.server.netif import randomMAC
from xen.util.blkif import blkdev_name_to_number, blkdev_uname_to_file
-from xen.util.pci import assigned_or_requested_vslot
from xen.util import xsconstants
import xen.util.auxbin
dpci_record = {
'VM': self['uuid'],
'PPCI': ppci_uuid,
- 'hotplug_slot': pci_dev.get('requested_vslot', 0)
+ 'hotplug_slot': pci_dev.get('vslot', 0)
}
dpci_opts = pci_dev.get('opts')
dpci_record = {
'VM': self['uuid'],
'PPCI': ppci_uuid,
- 'hotplug_slot': pci_dev.get('requested_vslot', 0)
+ 'hotplug_slot': pci_dev.get('vslot', 0)
}
dpci_opts = pci_dev.get('opts')
bus = sxp.child_value(dev, 'bus')
slot = sxp.child_value(dev, 'slot')
func = sxp.child_value(dev, 'func')
- vslot = assigned_or_requested_vslot(dev)
+ vslot = sxp.child_value(dev, 'vslot')
opts = ''
for opt in sxp.child_value(dev, 'opts', []):
if opts:
from xen.util.blkif import blkdev_uname_to_file, blkdev_uname_to_taptype
import xen.util.xsm.xsm as security
from xen.util import xsconstants
-from xen.util.pci import assigned_or_requested_vslot, serialise_pci_opts
+from xen.util.pci import serialise_pci_opts
from xen.xend import balloon, sxp, uuid, image, arch
from xen.xend import XendOptions, XendNode, XendConfig
pci_conf = self.info['devices'][dev_uuid][1]
pci_devs = pci_conf['devs']
for x in pci_devs:
- x_vslot = assigned_or_requested_vslot(x)
- if (int(x_vslot, 16) == int(new_dev['requested_vslot'], 16) and
- int(x_vslot, 16) != AUTO_PHP_SLOT):
- raise VmError("vslot %s already have a device." % (new_dev['requested_vslot']))
+ if (int(x['vslot'], 16) == int(new_dev['vslot'], 16) and
+ int(x['vslot'], 16) != AUTO_PHP_SLOT):
+ raise VmError("vslot %s already have a device." % (new_dev['vslot']))
if (int(x['domain'], 16) == int(new_dev['domain'], 16) and
int(x['bus'], 16) == int(new_dev['bus'], 16) and
new_dev['bus'],
new_dev['slot'],
new_dev['func'],
- # vslot will be used when activating a
- # previously activated domain.
- # Otherwise requested_vslot will be used.
- assigned_or_requested_vslot(new_dev),
+ new_dev['vslot'],
opts)
self.image.signalDeviceModel('pci-ins', 'pci-inserted', bdf_str)
vslot = xstransact.Read("/local/domain/0/device-model/%i/parameter"
% self.getDomid())
else:
- vslot = new_dev['requested_vslot']
+ vslot = new_dev['vslot']
return vslot
int(x['bus'], 16) == int(dev['bus'], 16) and
int(x['slot'], 16) == int(dev['slot'], 16) and
int(x['func'], 16) == int(dev['func'], 16) ):
- vslot = assigned_or_requested_vslot(x)
+ vslot = x['vslot']
break
if vslot == "":
raise VmError("Device %04x:%02x:%02x.%01x is not connected"
#find the pass-through device with the virtual slot
devnum = 0
for x in pci_conf['devs']:
- x_vslot = assigned_or_requested_vslot(x)
- if int(x_vslot, 16) == vslot:
+ if int(x['vslot'], 16) == vslot:
break
devnum += 1
bus = parse_hex(pci_config.get('bus', 0))
slot = parse_hex(pci_config.get('slot', 0))
func = parse_hex(pci_config.get('func', 0))
- vslot = parse_hex(assigned_or_requested_vslot(pci_config))
+ vslot = parse_hex(pci_config.get('vslot', 0))
if pci_config.has_key('opts'):
opts = serialise_pci_opts(pci_config['opts'])
config_pci_bdf = ['dev', ['domain', domain], ['bus', bus], \
['slot', slot], ['func', func],
- ['requested_vslot', vslot]]
+ ['vslot', vslot]]
map(f, d.keys())
if len(config_pci_opts)>0:
config_pci_bdf.append(['opts', config_pci_opts])
"bus": int(x["bus"], 16),
"slot": int(x["slot"], 16),
"func": int(x["func"], 16),
- "vslot": int(assigned_or_requested_vslot(x), 16)
+ "vslot": int(x["vslot"], 16)
}
devs.append(dev)
['bus', '0x'+ pci_dev_info['bus']],
['slot', '0x'+ pci_dev_info['slot']],
['func', '0x'+ pci_dev_info['func']],
- ['requested_vslot', '0x%x' % int(vslot, 16)]]
+ ['vslot', '0x%x' % int(vslot, 16)]]
if len(opts) > 0:
pci_bdf.append(['opts', opts])
pci.append(pci_bdf)